There is a method called fuzzing as one of methods of detecting unknown vulnerability included in a program and a target device that executes the program. In the fuzzing, a test device supplies a large amount of various kinds of random data to a target device, and monitors responses from the target device and behaviors of the target device. Further, the test device detects the vulnerability based on the obtained responses and behaviors.
However, a large amount of data is randomly selected in the fuzzing, and thus, there is a case in which unevenness occurs in components of a program to be executed by the target device during the test. For example, there is a case in which a function X is executed for 100 times or more while a function Y is executed only once. When such unevenness occurs in the components executed during the test, the developed program has vulnerability, and some components thereof are not sufficiently tested.
It may be configured such that data covering the entire combination is generated, the entire generated data is supplied to a target device, and responses and behaviors thereof are monitored during test in order to prevent unevenness from occurring in components of a program to be executed during the test by the target device. However, such a method is not practical as data to be supplied is enormous, and the test time increases.
A problem to be solved by the embodiment described herein is to determine a condition of input data that enables a target device to execute an insufficiently tested component included in a program.